package com.bsth.entity.schedule;

import com.bsth.entity.Line;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

import javax.persistence.*;

/**
 * 路牌信息。
 */
@Entity
@Table(name = "bsth_c_s_gbi")
@NamedEntityGraphs({
        @NamedEntityGraph(name = "guideboardInfo_xl", attributeNodes = {
                @NamedAttributeNode("xl")
        })
})
@JsonIgnoreProperties(value={"hibernateLazyInitializer","handler","fieldHandler"})
public class GuideboardInfo extends BEntity {

    /** 主键Id */
    @Id
    @GeneratedValue
    private Long id;

    /** 线路关联 */
    @ManyToOne(optional = false, cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
    private Line xl;

    /** 路牌顺序号 */
    @Column(nullable = false)
    private Integer lpNo;
    /** 路牌名称 */
    @Column(nullable = false)
    private String lpName;
    /** 路牌类型（普通路牌／临加路牌） */
    @Column(nullable = false)
    private String lpType;

    /** 是否删除（标记） */
    @Column(nullable = false)
    private Boolean isCancel = false;

    public GuideboardInfo() {}

    public GuideboardInfo(Object id, Object xlid, Object lpNo, Object lpName) {
        if (id != null) {
            this.id = Long.parseLong(id.toString());
        }

        Integer xlid_ = xlid == null ? null : Integer.valueOf(xlid.toString());
        Integer lpNo_ = lpNo == null ? null : Integer.valueOf(lpNo.toString());
        String lpName_ = lpName == null ? null : String.valueOf(lpName);

        if (xlid_ != null) {
            Line line = new Line();
            line.setId(xlid_);
            this.xl = line;
        }

        this.lpNo = lpNo_;
        this.lpName = lpName_;
    }

    public GuideboardInfo(Object id, Integer xlid, Integer lpNo) {
        this(id, xlid, lpNo, null);
    }
    public GuideboardInfo(Object id, Integer xlid, String lpName) {
        this(id, xlid, null, lpName);
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Line getXl() {
        return xl;
    }

    public void setXl(Line xl) {
        this.xl = xl;
    }

    public Integer getLpNo() {
        return lpNo;
    }

    public void setLpNo(Integer lpNo) {
        this.lpNo = lpNo;
    }

    public String getLpName() {
        return lpName;
    }

    public void setLpName(String lpName) {
        this.lpName = lpName;
    }

    public String getLpType() {
        return lpType;
    }

    public void setLpType(String lpType) {
        this.lpType = lpType;
    }

    public Boolean getIsCancel() {
        return isCancel;
    }

    public void setIsCancel(Boolean isCancel) {
        this.isCancel = isCancel;
    }
}
